#pragma once
#ifndef __G_VERSION_H__
#define __G_VERSION_H__

#include <string>

#include "../../Foundation/GUtilities/GTypes.h"

//! Will be defined by build system
#define		G_ENGINE_VERSION_MAJOR		0
#define		G_ENGINE_VERSION_MINOR		1
#define		G_ENGINE_VERSION_REVISION	1

namespace GEngine
{
	class GVersion
	{
	private:
		GUInt16				Major;
		GUInt16				Minor;
		GUInt16				Revision;

		std::string			VersionString;

	public:
							GVersion(GUInt16 VerMajor, GUInt16 VerMinor, GUInt16 VerRevision);
							~GVersion();

		GUInt32				GetMajor() const;
		GUInt32				GetMinor() const;
		GUInt32				GetRevision() const;

		const char*			GetString() const;

		const GVersion&		operator  = (const GVersion& Other);
		bool				operator >= (const GVersion& Other) const;
		bool				operator <= (const GVersion& Other) const;

		static GVersion		GetEngineVersion();
	};
}

#endif